<?php

class OrcamentosController extends AppController {
  
  
    public $uses = array("Orcamento", 'Info', 'Profi');
    public $helpers = array('Cakebr.Formatacao', 'Form2');
    public $paginate = array(
        "Pagina" => array(
            "limit" => 30,
            "order" => array(
                "Pagina.id" => "ASC"
            )
        )
    );
	
 var $components = array('Email', 'RequestHandler');

	function beforeFilter()
	{
		parent::beforeFilter();
		
		
        Configure::write(
            'Base', array('this' => $this->Orcamento, 'tabela' => 'Orcamento')
        );

	}


	function area_restrita()
	{
		
	}
	
	function geraSenha($tamanho = 8, $maiusculas = true, $numeros = true, $simbolos = false)
		{
			$lmin = 'abcdefghijklmnopqrstuvwxyz';
			$lmai = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
			$num = '1234567890';
			$simb = '!@#$%*-';
			$retorno = '';
			$caracteres = '';
			
			$caracteres .= $lmin;
			if ($maiusculas) $caracteres .= $lmai;
			if ($numeros) $caracteres .= $num;
			if ($simbolos) $caracteres .= $simb;
			
			$len = strlen($caracteres);
			for ($n = 1; $n <= $tamanho; $n++)
			{
				$rand = mt_rand(1, $len);
				$retorno .= $caracteres[$rand-1];
			}
			return $retorno;
		}
		
	function novaseguranca()
	{
		$valor_seguranca = $this->geraSenha(5, true, true, false);
		$this->set('valor_seguranca', $valor_seguranca);
		//echo $valor_seguranca;
	}

   function index()
	{		
		$this->set('habCatOptions', 'a');
		$this->novaseguranca();
	}
	
	function login()
	{
		/*$this->User->create();
					$this->User->set(array('nome' => 'samuel', 'cpf' => '135','senha' => 'admin', 'password' => $this->Auth->password('admin'), 'username' => 'admin'));
					$this->User->save();*/
	}

	function logout()
	{
		$this->redirect($this->Auth->logout()); // Efetuamos logout
	}
	
	function editar($id = null)
	{
		$experiencias = $this->Profi->find('first', array('conditions' => array('Profi.usuario_id' => $id)));
		$this->set('experiencias', $experiencias);
		
		
	}
	
	function calculardias()
	{
	}
	
	function email($emailCliente, $nomeCliente, $orcamentosId)
	{
		$this->set("tipo", "Orçamento");
		
		## Envio de Email Para o Administrador ##
		#########################################
		
		// Configurações da escrita do email
		$this->loadModel('Comunicacoes');
        $content_email = $this->Comunicacoes->read(null, 3); // 3 = ToAdmin
				
		// Pega o orçamento
		$this->loadModel('Orcamento');
        $orcamentos = $this->Orcamento->read(null, $orcamentosId); 
		
		// Define campos do orçamento
		$empresa = $orcamentos['Orcamento']['empresa'];
		$assunto = $orcamentos['Orcamento']['assunto'];
		$nome = $orcamentos['Orcamento']['nome'];
		$telefone = $orcamentos['Orcamento']['telefone'];
		$email = $orcamentos['Orcamento']['email'];
		$obs = $orcamentos['Orcamento']['obs'];
		
		// Configurações do envio do email
		$this->loadModel('Modulo');
        $smtp_email = $this->Modulo->read('Modulo.valor', 1);
        $smtp_usuario = $this->Modulo->read('Modulo.valor', 4);
        $smtp_senha = $this->Modulo->read('Modulo.valor', 5);
        $smtp_host = $this->Modulo->read('Modulo.valor', 2);
        $smtp_port = $this->Modulo->read('Modulo.valor', 32);

        $smtp_email = $smtp_email['Modulo']['valor'];
        $smtp_usuario = $smtp_usuario['Modulo']['valor'];
        $smtp_senha = $smtp_senha['Modulo']['valor'];
        $smtp_host = $smtp_host['Modulo']['valor'];
        $smtp_port = $smtp_port['Modulo']['valor'];
		
		// Envio do email
		$this->Email->smtpOptions = array(
		'port'=>$smtp_port,
		'timeout'=>'30',
		'host' => $smtp_host,
		'client' => $smtp_usuario
		);
		
		$this->Email->delivery = 'smtp';
		$this->Email->to = $smtp_email;
		$this->Email->subject = 'All Brazil - Orçamento ('.$assunto.')';
		$this->Email->replyTo = $email;
		$this->Email->from = $nome.' <'.$email.'>';
		$this->Email->layout = 'contato';
		$this->Email->template = 'default';
		$this->Email->sendAs = 'html';
		$content = $content_email['Comunicacoes']['texto'];
		
		$content=str_replace("[%%Usuario.nome%%]","$nome", $content);
		$content=str_replace("[%%Usuario.empresa%%]","$empresa", $content);
		$content=str_replace("[%%Usuario.assunto%%]","$assunto",$content);
		$content=str_replace("[%%Usuario.email%%]","$email",$content);
		$content=str_replace("[%%Usuario.telefone%%]","$telefone",$content);
		$content=str_replace("[%%Usuario.obs%%]","<div style='width: 500px;'>$obs</div>",$content);
		
		$this->set("content", $content);
		
		if($this->Email->send()) // Se o envio para o Administrador tiver êxito.
		{
			$this->Email->reset(); // Reinicia o sistema de envio de email.
			
			## Envio de Email Para o Cliente ##
			###################################
			
			// Configurações da escrita do email
			$content_email = $this->Comunicacoes->read(null, 4); // ToClient
			
			// Envio do email
			$this->Email->smtpOptions = array(
			'port'=>$smtp_port,
			'timeout'=>'30',
			'host' => $smtp_host,
			'client' => $smtp_usuario
			);
			
			$this->Email->delivery = 'smtp';
			$this->Email->to = $email; // $email = email do cliente
			$this->Email->subject = 'All Brazil - Orçamento ('.$assunto.')';
			$this->Email->replyTo = $smtp_email; // $smtp_email = email do admin;
			$this->Email->from = 'All Brazil'.' <'.$smtp_email.'>';
			$this->Email->layout = 'contato';
			$this->Email->template = 'default';
			$this->Email->sendAs = 'html';
			$content = $content_email['Comunicacoes']['texto'];
			
			$content=str_replace("[%%Usuario.nome%%]","$nome", $content);
			$content=str_replace("[%%Usuario.empresa%%]","$empresa", $content);
			$content=str_replace("[%%Usuario.assunto%%]","$assunto",$content);
			$content=str_replace("[%%Usuario.email%%]","$email",$content);
			$content=str_replace("[%%Usuario.telefone%%]","$telefone",$content);
			$content=str_replace("[%%Usuario.obs%%]","$obs",$content);
			
			$this->set("content", $content); // Seta o conteúdo do email.
				
			$this->Email->send(); // Envia email para o cliente.
			
			$this->Session->setFlash("Sua Mensagem foi enviada com sucesso. Em breve entraremos em contato", 'default', array('class' => 'confirmation-message'));
			
		}
		else
		{
			$this->Session->setFlash("Desculpe, ocorreu uma falha no envio de sua mensagem", 'default', array('class' => 'error-message'));
        }
	}
	
	function cadastrar()
	{

		if($this->data)
		{
			$this->set('dados', $this->data);
			/*echo("<pre>");
			print_r($this->data);
			echo("</pre>");*/
			$pode = true;
			if($this->data['Orcamento']['empresa'] == "")
			{
				$pode = false;
			}
			
			else if($this->data['Orcamento']['nome'] == "")
			{
				$pode = false;
			}
			
			else if($this->data['Orcamento']['email'] == "")
			{
				$pode = false;
			}
			
			else if($this->data['Orcamento']['telefone'] == "")
			{
				$pode = false;
			}
			
			else if($this->data['Orcamento']['assunto'] == "")
			{
				$pode = false;
			}
			
			else if($this->data['Orcamento']['obs'] == "")
			{
				$pode = false;
			}
			
			if($pode)
			{
				$this->data['Orcamento']['code_validation'] = strtoupper($this->data['Orcamento']['code_validation']);
				
				$this->data['Orcamento']['code'] = strtoupper($this->data['Orcamento']['code']);
						
				if($this->data['Orcamento']['code'] == $this->data['Orcamento']['code_validation'])
				{
					$this->Orcamento->save($this->data);
					$this->set('msgErro',"Enviado com sucesso");
					$this->email($this->data['Orcamento']['email'], $this->data['Orcamento']['nome'], $this->Orcamento->getLastInsertId());	
					
				}
				
				
				else
				{
					$this->Session->setFlash("Código não confere.", 'default', array('class' => 'error-message'));
					$this->set('msgErro',"Código não confere.");	
				}
						
						
				
			}
			else
			{
				$this->set('msgErro',"Preencha todos os campos.");
			}
			
		}
	}
}
?>